//package cur.component.redis.queue;
//
//import com.foctm.nature.core.log.LOG;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.connection.Message;
//import org.springframework.data.redis.connection.MessageListener;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.serializer.RedisSerializer;
//import org.springframework.stereotype.Component;
//import org.springframework.util.DigestUtils;
//
//import java.nio.charset.StandardCharsets;
//import java.util.concurrent.TimeUnit;
//
//@Component
//public class RedisMessageListener implements MessageListener {
//    @Autowired
//    private RedisTemplate<String, Object> redisTemplate;
//    /**
//     * 消息处理
//     *
//     * @param message
//     * @param pattern
//     */
//    @Override
//    public void onMessage(Message message, byte[] pattern) {
//        String channel = new String(pattern);
//        LOG.info("onMessage --> 消息通道是：" + channel);
//
//        RedisSerializer<?> valueSerializer = redisTemplate.getValueSerializer();
//        Object deserialize = valueSerializer.deserialize(message.getBody());
//        LOG.info("反序列化的结果:" + deserialize);
//        if (deserialize == null) {
//            return;
//        }
//        String md5DigestAsHex = DigestUtils.md5DigestAsHex(deserialize.toString().getBytes(StandardCharsets.UTF_8));
//        LOG.info("计算得到的key: " +  md5DigestAsHex);
//        Boolean result = redisTemplate.opsForValue().setIfAbsent(md5DigestAsHex, "1", 20, TimeUnit.SECONDS);
//        if (Boolean.TRUE.equals(result)) {
//            // redis消息进行处理
//            LOG.info("接收的结果：" + deserialize.toString());
//        } else {
//            LOG.info("其他服务处理中");
//        }
//    }
//}
